跳到主要内容

curl 学习笔记

  • curl是什么?
  • curl可以用来干什么?
  • curl的使用场景是什么?

curl 全名是 client 是一个在命令行使用的命令,作用是可以发送网络请求,支持文件的上传和下载。使用场景是,在命令行中进行数据请求和文件上传/下载;

最常用的场景:

  • curl https://www.example.com/

  • -A:指定客户端的用户代理标头,即User-Agent

    • curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com ---- 将 User-Agent 改为chrome 浏览器
    • curl -A '' https:google.com ---- 移除 User-Agent
  • -b:向服务器发送cookie

  • -c: 将服务器设置的Cookie 写入一个文件

  • -d: 发送POST 请求的数据体

  • curl -d '@data.txt' https://google.com/login ---- 读取data.txt 文件的内容,作为数据体发给服务器

  • -d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST

--data-urlencode:等同于-d,发送POST 请求的数据体,区别在于会自动将发送放入数据进行URL编码

-e: 设置HTTP的标头Reffer

-F: 向服务器上传二进制文件

  • curl -F 'file=@photo.png' https://google.com ---- HTTP请求会自动加上标头  Content-Type: multipart/form-data,然后将photo.png 作为file字段上传

-G: 构造URL的查询字符串

-H:直接指定标头

-i: 打印出服务器的HTTP 请求头 + 网页源码

-I: 向服务器发出 HEAD 请求,然会将服务器返回的 HTTP 标头打印出来,--head参数等同于-I

-k: 指定跳过 SSL 检测,不检查服务器的 SSL 证书是否正确

-L: 让 HTTP 请求跟随服务器的重定向,默认不跟随重定向

--limit-rate:限制 HTTP 请求和回应的带宽,模拟慢网速的环境

-o: 把输出写到该文件中

-O: 将服务器回应保存成文件,并将 URL 的最后部分当作文件名

-s: 不输出错误和进度信息

-S: 只输出错误信息,通常与 -o 一起使用

-u 设置服务器认证的用户名和密码

  • curl -u 'bob:12345' https://google.com/login ---- 设置用户名为bob,密码为 12345,将其转为 HTTP 标头Authorization: Basic Ym9iOjEyMzQ1

-v:输出通信的整个过程,用于调试

-x: 指定HTTP请求的代理

  • curl -x socks5://james:cats@myproxy.com:8080 https://www.example.com ---- 指定HTTP 请求通过myproxy.com:8080的 socks5 代理发出

-X: 指定HTTP请求的方式

  • curl -X POST https:xxx.example.com ---- 发出一个POST请求

补充 ---- 简写及其全拼:

-A/--user-agent: 模仿浏览器

-b/--cookie <name=string>: 使用cookie

-c/--cookie-jar <file>: 保存cookie到file

-e/--reffer: 设置来源地址

-o/--output: 把输出写到该文件中

-u/--user: 设置服务器的用户名和密码

-x/--proxy:指定proxy服务器及其端口

-s/--slient: 静音模式,不输出任何东西